"use strict";
//变量的声明
//js基本数据类型：number string null undefined boolean symbol
//js引用数据类型：array object
//ts 类型：any 任意类型  tuple元组  void
var str = 'helllo';
str = '123';
console.log(str);
var num = 123;
num = 12.00;
num = 0.1;
//联合声明
//管道符
var shouzhuo = null;
shouzhuo = 'zss';
//类型推断
var name1 = 'lili';
// name1 = true;
var isLogin = true;
// isLogin = '12'
var param = 1;
param = 'aa';
param = true;
//数组
/**
 * 语法一：let 变量名:类型[] = []
 *
 * 语法二：let 变量名:Array<类型> = [];
 *
*/
// let arr:string[] = ['70以下','70~80','81~90','91~100'];
var score = [70, 80, 60];
var arr = ['70以下', '70~80', '81~90', '91~100'];
var arr1 = [1, 'sss', true]; //数组内放置任意类型
//元组：一种特殊的数组，它规定了数组每一项的类型
var arr2 = ['hello', true, null];
//enum 枚举
/**
 * 语法：
 *
 * enum 枚举名{ //必须首字母大写
 *      属性名=值
 *      ...
 * }
 *
 * 注：属性没值，就取下标的值
 *
*/
var Role;
(function (Role) {
    Role[Role["teacher"] = 1] = "teacher";
    Role[Role["xuewei"] = 2] = "xuewei";
    Role[Role["student"] = 3] = "student";
})(Role || (Role = {}));
console.log(Role.xuewei);
var Sex;
(function (Sex) {
    Sex[Sex["girl"] = 0] = "girl";
    Sex[Sex["boy"] = 1] = "boy";
    Sex[Sex["unkown"] = 2] = "unkown";
})(Sex || (Sex = {}));
console.log(Sex.girl); //0
//void 没有返回值  一般用在函数没有返回值
// function sum(a:number,b:number):number{
//     return a+b
// }
// sum(1,2);
function sum(str) {
    var nums = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        nums[_i - 1] = arguments[_i];
    }
    var total = nums.reduce(function (prev, cur) {
        return prev + cur;
    });
    return str + "," + total;
}
console.log(sum('总合', 1, 2, 3));
function login() {
    //登录功能，不需要返回值
}
//never:永远不会结束的类型
function fun() {
    while (true) {
    }
}
//请求分页的数据
//函数的可选参数
function getList(pagenum, limit) {
    if (pagenum === void 0) { pagenum = 1; }
}
getList();
//类型断言
/**
 * 第一种：(变量名 as 数据类型)  常用
 * 第二种：(<数据类型>变量名)
 *
*/
var test = 'hello';
var str1 = test.substr(0, 1);
var str2 = test.substr(1, 2);
